home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 10 / BBS In A Box Volume X (AMUG) (January 1994).bin / Files / Prog / U-Z / VideoToolBox.cpt / VideoToolboxSources / Timer.c < prev    next >
MacBinary  |  1993-02-23  |  10.3 KB  |  [TEXT/KAHL]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Tue Feb 23 00:00:32 1993, modified Tue Feb 23 00:00:32 1993, creator Think C, type ASCII, 9745 bytes "Timer.c" , at 0x2691 418 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[KAHL]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 07 54 69 6d 65 72 2e | 63 00 00 00 00 00 00 00 |..Timer.|c.......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4b 41 48 | 4c 01 00 00 00 00 00 00 |.TEXTKAH|L.......|
|00000050| 00 00 00 00 00 26 11 00 | 00 01 a2 a7 af 5f f0 a7 |.....&..|....._..|
|00000060| af 5f f0 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |._......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 00 48 00 00 |........|.....H..|
|00000080| 2f 2a 0d 54 69 6d 65 72 | 2e 63 0d 41 6e 20 69 6e |/*.Timer|.c.An in|
|00000090| 74 65 72 76 61 6c 20 74 | 69 6d 65 72 20 62 61 73 |terval t|imer bas|
|000000a0| 65 64 20 6f 6e 20 41 70 | 70 6c 65 27 73 20 54 69 |ed on Ap|ple's Ti|
|000000b0| 6d 65 20 4d 61 6e 61 67 | 65 72 2e 20 49 74 20 72 |me Manag|er. It r|
|000000c0| 65 74 75 72 6e 73 20 74 | 68 65 20 74 69 6d 65 20 |eturns t|he time |
|000000d0| 74 68 61 74 0d 65 6c 61 | 70 73 65 64 20 62 65 74 |that.ela|psed bet|
|000000e0| 77 65 65 6e 20 63 61 6c | 6c 69 6e 67 20 53 74 61 |ween cal|ling Sta|
|000000f0| 72 74 54 69 6d 65 72 28 | 29 20 61 6e 64 20 53 74 |rtTimer(|) and St|
|00000100| 6f 70 54 69 6d 65 72 28 | 29 2e 20 55 6e 64 65 72 |opTimer(|). Under|
|00000110| 20 53 79 73 74 65 6d 20 | 37 2c 20 77 68 69 63 68 | System |7, which|
|00000120| 20 68 61 73 0d 74 68 65 | 20 45 78 74 65 6e 64 65 | has.the| Extende|
|00000130| 64 20 54 69 6d 65 20 4d | 61 6e 61 67 65 72 2c 20 |d Time M|anager, |
|00000140| 74 68 65 20 74 69 6d 69 | 6e 67 20 69 73 20 76 65 |the timi|ng is ve|
|00000150| 72 79 20 61 63 63 75 72 | 61 74 65 20 28 62 65 74 |ry accur|ate (bet|
|00000160| 74 65 72 20 74 68 61 6e | 20 31 20 70 61 72 74 20 |ter than| 1 part |
|00000170| 69 6e 0d 31 30 30 30 29 | 20 61 6e 64 20 61 20 70 |in.1000)| and a p|
|00000180| 72 65 63 69 73 69 6f 6e | 20 6f 66 20 62 65 74 74 |recision| of bett|
|00000190| 65 72 20 74 68 61 6e 20 | 32 30 30 20 b5 73 2e 20 |er than |200 .s. |
|000001a0| 55 6e 64 65 72 20 53 79 | 73 74 65 6d 20 36 20 74 |Under Sy|stem 6 t|
|000001b0| 68 65 20 70 72 65 63 69 | 73 69 6f 6e 20 77 69 6c |he preci|sion wil|
|000001c0| 6c 0d 62 65 20 61 62 6f | 75 74 20 31 20 6d 73 2c |l.be abo|ut 1 ms,|
|000001d0| 20 61 6e 64 20 74 68 65 | 20 72 65 74 75 72 6e 65 | and the| returne|
|000001e0| 64 20 74 69 6d 65 73 20 | 77 69 6c 6c 20 74 65 6e |d times |will ten|
|000001f0| 64 20 74 6f 20 62 65 20 | 61 62 6f 75 74 20 31 30 |d to be |about 10|
|00000200| 25 20 6c 6f 77 20 64 75 | 65 20 74 6f 0d 64 6f 63 |% low du|e to.doc|
|00000210| 75 6d 65 6e 74 65 64 20 | 64 65 66 69 63 69 65 6e |umented |deficien|
|00000220| 63 69 65 73 20 6f 66 20 | 41 70 70 6c 65 27 73 20 |cies of |Apple's |
|00000230| 6f 6c 64 20 52 65 76 69 | 73 65 64 20 54 69 6d 65 |old Revi|sed Time|
|00000240| 20 4d 61 6e 61 67 65 72 | 2e 20 54 68 65 20 65 76 | Manager|. The ev|
|00000250| 65 6e 20 6f 6c 64 65 72 | 0d 22 53 74 61 6e 64 61 |en older|."Standa|
|00000260| 72 64 22 20 54 69 6d 65 | 20 4d 61 6e 61 67 65 72 |rd" Time| Manager|
|00000270| 20 69 73 20 6e 6f 74 20 | 73 75 70 70 6f 72 74 65 | is not |supporte|
|00000280| 64 20 68 65 72 65 2c 20 | 61 6e 64 20 77 69 6c 6c |d here, |and will|
|00000290| 20 72 65 73 75 6c 74 20 | 69 6e 20 61 6e 20 65 72 | result |in an er|
|000002a0| 72 6f 72 20 6d 65 73 73 | 61 67 65 2e 0d 0d 4f 6e |ror mess|age...On|
|000002b0| 65 20 63 6f 75 6c 64 20 | 65 61 73 69 6c 79 20 61 |e could |easily a|
|000002c0| 64 64 20 61 20 50 65 65 | 6b 54 69 6d 65 72 28 29 |dd a Pee|kTimer()|
|000002d0| 20 72 6f 75 74 69 6e 65 | 20 74 6f 20 74 68 69 73 | routine| to this|
|000002e0| 20 73 65 74 2c 20 62 75 | 74 20 49 20 68 61 76 65 | set, bu|t I have|
|000002f0| 6e 27 74 0d 67 6f 74 74 | 65 6e 20 61 72 6f 75 6e |n't.gott|en aroun|
|00000300| 64 20 74 6f 20 69 74 2e | 20 53 65 6e 64 20 69 74 |d to it.| Send it|
|00000310| 20 74 6f 20 6d 65 20 69 | 66 20 79 6f 75 20 77 72 | to me i|f you wr|
|00000320| 69 74 65 20 69 74 2e 0d | 0d 54 69 6d 65 72 20 2a |ite it..|.Timer *|
|00000330| 4e 65 77 54 69 6d 65 72 | 28 76 6f 69 64 29 3b 0d |NewTimer|(void);.|
|00000340| 76 6f 69 64 20 44 69 73 | 70 6f 73 65 54 69 6d 65 |void Dis|poseTime|
|00000350| 72 28 54 69 6d 65 72 20 | 2a 74 29 3b 0d 76 6f 69 |r(Timer |*t);.voi|
|00000360| 64 20 53 74 61 72 74 54 | 69 6d 65 72 28 54 69 6d |d StartT|imer(Tim|
|00000370| 65 72 20 2a 74 29 3b 0d | 6c 6f 6e 67 20 53 74 6f |er *t);.|long Sto|
|00000380| 70 54 69 6d 65 72 28 54 | 69 6d 65 72 20 2a 74 29 |pTimer(T|imer *t)|
|00000390| 3b 09 09 09 09 09 2f 2f | 20 b5 73 2c 20 75 70 20 |;.....//| .s, up |
|000003a0| 74 6f 20 33 36 20 6d 69 | 6e 75 74 65 73 0d 64 6f |to 36 mi|nutes.do|
|000003b0| 75 62 6c 65 20 53 74 6f | 70 54 69 6d 65 72 53 65 |uble Sto|pTimerSe|
|000003c0| 63 73 28 54 69 6d 65 72 | 20 2a 74 29 3b 09 09 09 |cs(Timer| *t);...|
|000003d0| 09 2f 2f 20 73 2c 20 b5 | 73 20 70 72 65 63 69 73 |.// s, .|s precis|
|000003e0| 69 6f 6e 20 61 6e 64 20 | 6e 6f 20 74 69 6d 65 20 |ion and |no time |
|000003f0| 6c 69 6d 69 74 0d 0d 09 | 54 69 6d 65 72 20 2a 74 |limit...|Timer *t|
|00000400| 69 6d 65 72 3b 0d 09 6c | 6f 6e 67 20 74 3b 0d 09 |imer;..l|ong t;..|
|00000410| 0d 09 74 69 6d 65 72 3d | 4e 65 77 54 69 6d 65 72 |..timer=|NewTimer|
|00000420| 28 29 3b 0d 09 53 74 61 | 72 74 54 69 6d 65 72 28 |();..Sta|rtTimer(|
|00000430| 74 69 6d 65 72 29 3b 0d | 09 64 6f 28 69 3d 30 3b |timer);.|.do(i=0;|
|00000440| 69 3c 31 30 30 3b 69 2b | 2b 29 3b 0d 09 74 3d 53 |i<100;i+|+);..t=S|
|00000450| 74 6f 70 54 69 6d 65 72 | 28 74 69 6d 65 72 29 3b |topTimer|(timer);|
|00000460| 0d 09 44 69 73 70 6f 73 | 65 54 69 6d 65 72 28 74 |..Dispos|eTimer(t|
|00000470| 69 6d 65 72 29 3b 0d 09 | 70 72 69 6e 74 66 28 22 |imer);..|printf("|
|00000480| 4f 6e 65 20 68 75 6e 64 | 72 65 64 20 69 74 65 72 |One hund|red iter|
|00000490| 61 74 69 6f 6e 73 20 74 | 61 6b 65 73 20 25 6c 64 |ations t|akes %ld|
|000004a0| 20 b5 73 5c 6e 22 2c 74 | 29 3b 0d 0d 54 68 65 20 | .s\n",t|);..The |
|000004b0| 74 69 6d 69 6e 67 20 72 | 65 73 75 6c 74 20 63 6f |timing r|esult co|
|000004c0| 6d 65 73 20 69 6e 20 74 | 77 6f 20 66 6c 61 76 6f |mes in t|wo flavo|
|000004d0| 72 73 2e 20 53 74 6f 70 | 54 69 6d 65 72 28 29 20 |rs. Stop|Timer() |
|000004e0| 72 65 74 75 72 6e 73 20 | 74 68 65 20 74 69 6d 65 |returns |the time|
|000004f0| 20 69 6e 0d 6d 69 63 72 | 6f 73 65 63 6f 6e 64 73 | in.micr|oseconds|
|00000500| 20 61 73 20 61 20 6c 6f | 6e 67 2c 20 77 68 69 63 | as a lo|ng, whic|
|00000510| 68 20 63 61 6e 20 68 6f | 6c 64 20 61 20 74 69 6d |h can ho|ld a tim|
|00000520| 65 20 75 70 20 74 6f 20 | 32 2c 31 34 37 2c 34 38 |e up to |2,147,48|
|00000530| 33 2c 36 34 37 20 b5 73 | 2c 20 77 68 69 63 68 20 |3,647 .s|, which |
|00000540| 69 73 0d 6e 65 61 72 6c | 79 20 33 36 20 6d 69 6e |is.nearl|y 36 min|
|00000550| 75 74 65 73 2e 20 53 74 | 6f 70 54 69 6d 65 72 53 |utes. St|opTimerS|
|00000560| 65 63 73 28 29 20 72 65 | 74 75 72 6e 73 20 74 68 |ecs() re|turns th|
|00000570| 65 20 74 69 6d 65 20 69 | 6e 20 73 65 63 73 20 61 |e time i|n secs a|
|00000580| 73 20 61 20 64 6f 75 62 | 6c 65 2c 20 61 6e 64 20 |s a doub|le, and |
|00000590| 63 61 6e 0d 74 69 6d 65 | 20 61 6e 20 69 6e 74 65 |can.time| an inte|
|000005a0| 72 76 61 6c 20 6f 66 20 | 65 73 73 65 6e 74 69 61 |rval of |essentia|
|000005b0| 6c 6c 79 20 75 6e 6c 69 | 6d 69 74 65 64 20 64 75 |lly unli|mited du|
|000005c0| 72 61 74 69 6f 6e 20 77 | 69 74 68 20 6d 69 63 72 |ration w|ith micr|
|000005d0| 6f 73 65 63 6f 6e 64 20 | 70 72 65 63 69 73 69 6f |osecond |precisio|
|000005e0| 6e 2e 0d 0d 59 6f 75 20 | 63 61 6e 20 68 61 76 65 |n...You |can have|
|000005f0| 20 6d 61 6e 79 20 54 69 | 6d 65 72 73 20 72 75 6e | many Ti|mers run|
|00000600| 6e 69 6e 67 20 61 74 20 | 6f 6e 63 65 2e 20 54 68 |ning at |once. Th|
|00000610| 65 20 6f 6e 6c 79 20 72 | 65 73 74 72 69 63 74 69 |e only r|estricti|
|00000620| 6f 6e 20 69 73 20 74 68 | 61 74 20 79 6f 75 20 6d |on is th|at you m|
|00000630| 75 73 74 0d 63 72 65 61 | 74 65 20 65 61 63 68 20 |ust.crea|te each |
|00000640| 54 69 6d 65 72 2c 20 62 | 79 20 63 61 6c 6c 69 6e |Timer, b|y callin|
|00000650| 67 20 4e 65 77 54 69 6d | 65 72 28 29 20 62 65 66 |g NewTim|er() bef|
|00000660| 6f 72 65 20 79 6f 75 20 | 75 73 65 20 69 74 2c 20 |ore you |use it, |
|00000670| 61 6e 64 2c 20 6f 62 76 | 69 6f 75 73 6c 79 2c 0d |and, obv|iously,.|
|00000680| 73 68 6f 75 6c 64 20 6e | 6f 74 20 75 73 65 20 69 |should n|ot use i|
|00000690| 74 20 61 66 74 65 72 20 | 63 61 6c 6c 69 6e 67 20 |t after |calling |
|000006a0| 44 69 73 70 6f 73 65 54 | 69 6d 65 72 28 29 2e 0d |DisposeT|imer()..|
|000006b0| 0d 54 68 65 20 54 69 6d | 65 20 4d 61 6e 61 67 65 |.The Tim|e Manage|
|000006c0| 72 20 73 65 65 6d 73 20 | 74 6f 20 75 73 65 20 69 |r seems |to use i|
|000006d0| 6e 74 65 72 72 75 70 74 | 73 20 61 74 20 61 20 68 |nterrupt|s at a h|
|000006e0| 69 67 68 65 72 20 72 61 | 74 65 20 74 68 61 6e 20 |igher ra|te than |
|000006f0| 74 68 65 20 31 30 20 73 | 20 69 6e 74 65 72 76 61 |the 10 s| interva|
|00000700| 6c 0d 49 20 72 65 71 75 | 65 73 74 65 64 20 68 65 |l.I requ|ested he|
|00000710| 72 65 20 28 77 68 69 63 | 68 20 77 6f 75 6c 64 20 |re (whic|h would |
|00000720| 6e 65 76 65 72 20 65 78 | 70 69 72 65 20 69 6e 20 |never ex|pire in |
|00000730| 74 79 70 69 63 61 6c 20 | 75 73 65 29 2e 20 49 20 |typical |use). I |
|00000740| 69 6e 66 65 72 20 74 68 | 69 73 20 66 72 6f 6d 0d |infer th|is from.|
|00000750| 74 68 65 20 66 61 63 74 | 20 74 68 61 74 20 64 69 |the fact| that di|
|00000760| 73 61 62 6c 69 6e 67 20 | 69 6e 74 65 72 72 75 70 |sabling |interrup|
|00000770| 74 73 20 62 79 20 53 65 | 74 50 72 69 6f 72 69 74 |ts by Se|tPriorit|
|00000780| 79 28 37 29 20 67 72 65 | 61 74 6c 79 20 72 65 64 |y(7) gre|atly red|
|00000790| 75 63 65 73 20 74 68 65 | 20 74 69 6d 69 6e 67 0d |uces the| timing.|
|000007a0| 76 61 6c 75 65 20 72 65 | 74 75 72 6e 65 64 20 62 |value re|turned b|
|000007b0| 79 20 53 74 6f 70 54 69 | 6d 65 72 28 29 2e 20 53 |y StopTi|mer(). S|
|000007c0| 6f 20 64 6f 6e 27 74 20 | 64 69 73 61 62 6c 65 20 |o don't |disable |
|000007d0| 69 6e 74 65 72 72 75 70 | 74 73 20 77 68 69 6c 65 |interrup|ts while|
|000007e0| 20 79 6f 75 27 72 65 20 | 74 69 6d 69 6e 67 2e 0d | you're |timing..|
|000007f0| 0d 53 74 6f 70 54 69 6d | 65 72 28 29 20 61 64 64 |.StopTim|er() add|
|00000800| 73 20 61 20 73 6d 61 6c | 6c 20 6f 66 66 73 65 74 |s a smal|l offset|
|00000810| 20 28 61 62 6f 75 74 20 | 36 32 20 b5 73 20 6f 6e | (about |62 .s on|
|00000820| 20 61 20 4d 61 63 20 49 | 49 63 69 29 20 74 6f 20 | a Mac I|Ici) to |
|00000830| 74 68 65 20 72 61 77 20 | 74 69 6d 65 20 69 6e 0d |the raw |time in.|
|00000840| 6f 72 64 65 72 20 74 6f | 20 72 65 74 75 72 6e 20 |order to| return |
|00000850| 61 6e 20 75 6e 62 69 61 | 73 65 64 20 65 73 74 69 |an unbia|sed esti|
|00000860| 6d 61 74 65 20 6f 66 20 | 74 68 65 20 74 69 6d 65 |mate of |the time|
|00000870| 20 66 72 6f 6d 20 77 68 | 65 6e 20 53 74 61 72 74 | from wh|en Start|
|00000880| 54 69 6d 65 20 77 61 73 | 20 63 61 6c 6c 65 64 0d |Time was| called.|
|00000890| 74 6f 20 77 68 65 6e 20 | 53 74 6f 70 54 69 6d 65 |to when |StopTime|
|000008a0| 28 29 20 77 61 73 20 63 | 61 6c 6c 65 64 2e 20 54 |() was c|alled. T|
|000008b0| 68 69 73 20 69 73 20 74 | 68 65 20 6d 6f 73 74 20 |his is t|he most |
|000008c0| 75 73 65 66 75 6c 20 74 | 69 6d 65 20 6d 65 61 73 |useful t|ime meas|
|000008d0| 75 72 65 20 66 6f 72 0d | 6d 65 61 73 75 72 69 6e |ure for.|measurin|
|000008e0| 67 20 74 68 65 20 69 6e | 74 65 72 76 61 6c 20 62 |g the in|terval b|
|000008f0| 65 74 77 65 65 6e 20 74 | 77 6f 20 65 76 65 6e 74 |etween t|wo event|
|00000900| 73 20 28 65 2e 67 2e 20 | 76 69 64 65 6f 20 66 72 |s (e.g. |video fr|
|00000910| 61 6d 65 73 29 2e 20 41 | 6c 74 65 72 6e 61 74 69 |ames). A|lternati|
|00000920| 76 65 6c 79 2c 20 69 66 | 0d 79 6f 75 20 77 69 73 |vely, if|.you wis|
|00000930| 68 20 74 6f 20 6d 65 61 | 73 75 72 65 20 70 72 6f |h to mea|sure pro|
|00000940| 63 65 73 73 69 6e 67 20 | 74 69 6d 65 20 74 68 65 |cessing |time the|
|00000950| 6e 20 69 74 20 69 73 20 | 6d 6f 72 65 20 75 73 65 |n it is |more use|
|00000960| 66 75 6c 20 74 6f 20 63 | 6f 6d 70 75 74 65 20 74 |ful to c|ompute t|
|00000970| 68 65 20 74 69 6d 65 0d | 66 72 6f 6d 20 77 68 65 |he time.|from whe|
|00000980| 6e 20 53 74 61 72 74 54 | 69 6d 65 72 28 29 20 72 |n StartT|imer() r|
|00000990| 65 74 75 72 6e 73 20 74 | 6f 20 77 68 65 6e 20 53 |eturns t|o when S|
|000009a0| 74 6f 70 54 69 6d 65 72 | 28 29 20 69 73 20 63 61 |topTimer|() is ca|
|000009b0| 6c 6c 65 64 2e 20 46 6f | 72 20 74 68 69 73 20 79 |lled. Fo|r this y|
|000009c0| 6f 75 0d 73 69 6d 70 6c | 79 20 73 75 62 74 72 61 |ou.simpl|y subtra|
|000009d0| 63 74 20 74 68 65 20 66 | 69 78 65 64 20 64 75 72 |ct the f|ixed dur|
|000009e0| 61 74 69 6f 6e 20 6f 66 | 20 53 74 61 72 74 54 69 |ation of| StartTi|
|000009f0| 6d 65 72 28 29 2c 20 63 | 61 6c 6c 2d 74 6f 2d 72 |mer(), c|all-to-r|
|00000a00| 65 74 75 72 6e 2c 20 77 | 68 69 63 68 20 69 73 0d |eturn, w|hich is.|
|00000a10| 70 72 6f 76 69 64 65 64 | 20 69 6e 20 b5 73 20 69 |provided| in .s i|
|00000a20| 6e 20 79 6f 75 72 20 54 | 69 6d 65 72 20 73 74 72 |n your T|imer str|
|00000a30| 75 63 74 75 72 65 20 69 | 6e 20 74 68 65 20 6c 6f |ucture i|n the lo|
|00000a40| 6e 67 20 73 74 72 75 63 | 74 75 72 65 20 6d 65 6d |ng struc|ture mem|
|00000a50| 62 65 72 0d 22 74 69 6d | 65 54 6f 53 74 61 72 74 |ber."tim|eToStart|
|00000a60| 54 69 6d 65 72 22 2e 0d | 0d 09 62 65 74 77 65 65 |Timer"..|..betwee|
|00000a70| 6e 54 69 6d 65 20 3d 20 | 53 74 6f 70 54 69 6d 65 |nTime = |StopTime|
|00000a80| 72 28 74 29 20 2d 20 74 | 2d 3e 74 69 6d 65 54 6f |r(t) - t|->timeTo|
|00000a90| 53 74 61 72 74 54 69 6d | 65 72 3b 0d 09 0d 49 66 |StartTim|er;...If|
|00000aa0| 20 79 6f 75 20 75 73 65 | 20 53 74 6f 70 54 69 6d | you use| StopTim|
|00000ab0| 65 72 53 65 63 73 28 29 | 20 69 6e 73 74 65 61 64 |erSecs()| instead|
|00000ac0| 20 79 6f 75 27 6c 6c 20 | 68 61 76 65 20 74 6f 20 | you'll |have to |
|00000ad0| 64 69 76 69 64 65 20 74 | 69 6d 65 54 6f 53 74 61 |divide t|imeToSta|
|00000ae0| 72 74 54 69 6d 65 72 20 | 62 79 20 61 0d 6d 69 6c |rtTimer |by a.mil|
|00000af0| 6c 69 6f 6e 20 74 6f 20 | 63 6f 6e 76 65 72 74 20 |lion to |convert |
|00000b00| b5 73 20 74 6f 20 73 2e | 20 46 6f 72 20 73 6f 6d |.s to s.| For som|
|00000b10| 65 20 70 75 72 70 6f 73 | 65 73 20 74 68 69 73 20 |e purpos|es this |
|00000b20| 6f 66 66 73 65 74 20 69 | 73 20 6e 65 67 6c 69 67 |offset i|s neglig|
|00000b30| 69 62 6c 79 0d 73 6d 61 | 6c 6c 2e 20 4f 6e 20 6d |ibly.sma|ll. On m|
|00000b40| 79 20 4d 61 63 20 49 49 | 63 69 20 74 68 65 20 74 |y Mac II|ci the t|
|00000b50| 69 6d 65 54 6f 53 74 61 | 72 74 54 69 6d 65 72 20 |imeToSta|rtTimer |
|00000b60| 69 73 20 32 34 30 20 b5 | 73 2e 20 54 68 69 73 20 |is 240 .|s. This |
|00000b70| 6f 66 66 73 65 74 2c 20 | 61 6e 64 20 74 68 65 20 |offset, |and the |
|00000b80| 6f 6e 65 0d 6d 65 6e 74 | 69 6f 6e 65 64 20 61 62 |one.ment|ioned ab|
|00000b90| 6f 76 65 20 61 72 65 20 | 6d 65 61 73 75 72 65 64 |ove are |measured|
|00000ba0| 20 61 75 74 6f 6d 61 74 | 69 63 61 6c 6c 79 20 74 | automat|ically t|
|00000bb0| 68 65 20 66 69 72 73 74 | 20 74 69 6d 65 20 79 6f |he first| time yo|
|00000bc0| 75 20 63 61 6c 6c 20 4e | 65 77 54 69 6d 65 72 28 |u call N|ewTimer(|
|00000bd0| 29 2e 0d 41 6c 74 65 72 | 6e 61 74 69 76 65 6c 79 |)..Alter|natively|
|00000be0| 2c 20 69 6e 73 74 65 61 | 64 20 6f 66 20 68 61 76 |, instea|d of hav|
|00000bf0| 69 6e 67 20 74 6f 20 72 | 65 6d 65 6d 62 65 72 20 |ing to r|emember |
|00000c00| 74 68 65 20 6e 61 6d 65 | 20 6f 66 20 74 68 65 20 |the name| of the |
|00000c10| 73 74 72 75 63 74 75 72 | 65 20 6d 65 6d 62 65 72 |structur|e member|
|00000c20| 2c 0d 6a 75 73 74 20 6d | 65 61 73 75 72 65 20 74 |,.just m|easure t|
|00000c30| 68 65 20 74 69 6d 65 54 | 6f 53 74 61 72 74 54 69 |he timeT|oStartTi|
|00000c40| 6d 65 72 20 79 6f 75 72 | 73 65 6c 66 20 61 6e 64 |mer your|self and|
|00000c50| 20 73 75 62 74 72 61 63 | 74 20 69 74 20 66 72 6f | subtrac|t it fro|
|00000c60| 6d 20 61 6c 6c 20 73 75 | 62 73 65 71 75 65 6e 74 |m all su|bsequent|
|00000c70| 0d 6d 65 61 73 75 72 65 | 73 3a 0d 0d 09 53 74 61 |.measure|s:...Sta|
|00000c80| 72 74 54 69 6d 65 72 28 | 74 29 3b 0d 09 73 30 3d |rtTimer(|t);..s0=|
|00000c90| 53 74 6f 70 54 69 6d 65 | 72 53 65 63 28 74 29 3b |StopTime|rSec(t);|
|00000ca0| 0d 0d 54 68 65 20 54 69 | 6d 65 72 20 73 74 72 75 |..The Ti|mer stru|
|00000cb0| 63 74 75 72 65 73 20 61 | 72 65 20 6b 65 70 74 20 |ctures a|re kept |
|00000cc0| 69 6e 20 61 20 6c 69 6e | 6b 65 64 20 6c 69 73 74 |in a lin|ked list|
|00000cd0| 20 73 6f 20 74 68 61 74 | 20 4b 69 6c 6c 45 76 65 | so that| KillEve|
|00000ce0| 72 79 54 69 6d 65 72 28 | 29 2c 20 77 68 69 63 68 |ryTimer(|), which|
|00000cf0| 0d 69 73 20 70 6c 61 63 | 65 64 20 69 6e 20 74 68 |.is plac|ed in th|
|00000d00| 65 20 5f 61 74 65 78 69 | 74 28 29 20 71 75 65 75 |e _atexi|t() queu|
|00000d10| 65 2c 20 63 61 6e 20 66 | 69 6e 64 20 61 6e 64 20 |e, can f|ind and |
|00000d20| 6b 69 6c 6c 20 74 68 65 | 6d 20 77 68 65 6e 20 74 |kill the|m when t|
|00000d30| 68 65 20 61 70 70 6c 69 | 63 61 74 69 6f 6e 0d 65 |he appli|cation.e|
|00000d40| 78 69 74 73 2e 0d 0d 48 | 49 53 54 4f 52 59 3a 0d |xits...H|ISTORY:.|
|00000d50| 38 2f 31 39 2f 39 32 20 | 64 67 70 09 62 61 73 65 |8/19/92 |dgp.base|
|00000d60| 64 20 6f 6e 20 54 69 6d | 65 20 4d 61 6e 61 67 65 |d on Tim|e Manage|
|00000d70| 72 20 63 68 61 70 74 65 | 72 20 69 6e 20 49 6e 73 |r chapte|r in Ins|
|00000d80| 69 64 65 20 4d 61 63 20 | 56 49 20 61 6e 64 20 54 |ide Mac |VI and T|
|00000d90| 69 6d 65 49 74 2e 63 2c | 20 0d 09 77 68 69 63 68 |imeIt.c,| ..which|
|00000da0| 20 69 73 20 6e 6f 77 20 | 6f 62 73 6f 6c 65 74 65 | is now |obsolete|
|00000db0| 2e 20 49 20 61 6c 73 6f | 20 62 65 6e 65 66 69 74 |. I also| benefit|
|00000dc0| 65 64 20 66 72 6f 6d 20 | 65 78 61 6d 69 6e 69 6e |ed from |examinin|
|00000dd0| 67 20 63 6f 64 65 20 62 | 79 20 4a 6f 6e 6f 74 68 |g code b|y Jonoth|
|00000de0| 61 6e 20 4b 6f 6c 6f 64 | 6e 79 0d 09 66 6f 72 77 |an Kolod|ny..forw|
|00000df0| 61 72 64 65 64 20 74 6f | 20 6d 65 20 62 79 20 54 |arded to| me by T|
|00000e00| 68 6f 6d 61 73 20 42 75 | 73 65 79 2e 0d 38 2f 32 |homas Bu|sey..8/2|
|00000e10| 37 2f 39 32 09 64 67 70 | 09 52 65 77 72 6f 74 65 |7/92.dgp|.Rewrote|
|00000e20| 20 65 76 65 72 79 74 68 | 69 6e 67 2e 20 4d 61 64 | everyth|ing. Mad|
|00000e30| 65 20 74 68 65 20 69 6e | 74 65 72 72 75 70 74 20 |e the in|terrupt |
|00000e40| 73 65 72 76 69 63 65 20 | 72 6f 75 74 69 6e 65 20 |service |routine |
|00000e50| 72 65 65 6e 74 72 61 6e | 74 20 0d 09 62 79 20 65 |reentran|t ..by e|
|00000e60| 6c 69 6d 69 6e 61 74 69 | 6e 67 20 61 6c 6c 20 75 |liminati|ng all u|
|00000e70| 73 65 20 6f 66 20 67 6c | 6f 62 61 6c 20 76 61 72 |se of gl|obal var|
|00000e80| 69 61 62 6c 65 73 2c 20 | 75 73 69 6e 67 20 6f 6e |iables, |using on|
|00000e90| 6c 79 20 74 68 65 20 73 | 74 72 75 63 74 75 72 65 |ly the s|tructure|
|00000ea0| 20 70 6f 69 6e 74 65 64 | 0d 09 74 6f 20 62 79 20 | pointed|..to by |
|00000eb0| 41 31 2e 20 54 68 65 72 | 65 20 63 61 6e 20 6e 6f |A1. Ther|e can no|
|00000ec0| 77 20 62 65 20 61 6e 20 | 75 6e 6c 69 6d 69 74 65 |w be an |unlimite|
|00000ed0| 64 20 6e 75 6d 62 65 72 | 20 6f 66 20 74 69 6d 65 |d number| of time|
|00000ee0| 72 73 20 61 63 74 69 76 | 65 20 61 74 20 6f 6e 63 |rs activ|e at onc|
|00000ef0| 65 2e 0d 09 41 64 64 65 | 64 20 4e 65 77 54 69 6d |e...Adde|d NewTim|
|00000f00| 65 72 28 29 20 61 6e 64 | 20 44 69 73 70 6f 73 65 |er() and| Dispose|
|00000f10| 54 69 6d 65 72 28 29 20 | 74 6f 20 6d 61 6e 61 67 |Timer() |to manag|
|00000f20| 65 20 74 68 65 6d 2e 20 | 0d 39 2f 31 30 2f 39 32 |e them. |.9/10/92|
|00000f30| 09 64 67 70 09 61 64 64 | 65 64 20 63 61 6c 6c 73 |.dgp.add|ed calls|
|00000f40| 20 74 6f 20 56 4d 20 74 | 6f 20 48 6f 6c 64 4d 65 | to VM t|o HoldMe|
|00000f50| 6d 6f 72 79 28 29 20 61 | 6e 64 20 55 6e 48 6f 6c |mory() a|nd UnHol|
|00000f60| 64 4d 65 6d 6f 72 79 28 | 29 2e 20 41 63 63 6f 72 |dMemory(|). Accor|
|00000f70| 64 69 6e 67 20 74 6f 20 | 41 70 70 6c 65 27 73 0d |ding to |Apple's.|
|00000f80| 09 4d 65 6d 6f 72 79 20 | 62 6f 6f 6b 20 74 68 69 |.Memory |book thi|
|00000f90| 73 20 69 73 6e 27 74 20 | 73 74 72 69 63 74 6c 79 |s isn't |strictly|
|00000fa0| 20 6e 65 63 65 73 73 61 | 72 79 2c 20 73 69 6e 63 | necessa|ry, sinc|
|00000fb0| 65 20 54 69 6d 65 20 4d | 61 6e 61 67 65 72 20 74 |e Time M|anager t|
|00000fc0| 61 73 6b 73 20 77 69 6c | 6c 20 62 65 0d 09 63 61 |asks wil|l be..ca|
|00000fd0| 6c 6c 65 64 20 6f 6e 6c | 79 20 77 68 65 6e 20 69 |lled onl|y when i|
|00000fe0| 74 27 73 20 73 61 66 65 | 2e 0d 31 2f 31 31 2f 39 |t's safe|..1/11/9|
|00000ff0| 33 20 64 67 70 20 53 74 | 6f 70 54 69 6d 65 72 53 |3 dgp St|opTimerS|
|00001000| 65 63 73 28 29 20 6e 6f | 77 20 72 65 74 75 72 6e |ecs() no|w return|
|00001010| 73 20 4e 41 4e 20 69 66 | 20 63 61 6c 6c 65 64 20 |s NAN if| called |
|00001020| 77 69 74 68 20 61 20 4e | 55 4c 4c 20 70 6f 69 6e |with a N|ULL poin|
|00001030| 74 65 72 2e 0d 2a 2f 0d | 23 69 6e 63 6c 75 64 65 |ter..*/.|#include|
|00001040| 20 22 56 69 64 65 6f 54 | 6f 6f 6c 62 6f 78 2e 68 | "VideoT|oolbox.h|
|00001050| 22 0d 73 74 61 74 69 63 | 20 70 61 73 63 61 6c 20 |".static| pascal |
|00001060| 76 6f 69 64 20 54 69 6d | 65 72 54 61 73 6b 28 76 |void Tim|erTask(v|
|00001070| 6f 69 64 29 3b 0d 76 6f | 69 64 20 4b 69 6c 6c 45 |oid);.vo|id KillE|
|00001080| 76 65 72 79 54 69 6d 65 | 72 28 76 6f 69 64 29 3b |veryTime|r(void);|
|00001090| 0d 50 74 72 20 47 65 74 | 41 31 28 76 6f 69 64 29 |.Ptr Get|A1(void)|
|000010a0| 3b 0d 0d 2f 2a 20 54 68 | 69 73 20 69 73 20 61 20 |;../* Th|is is a |
|000010b0| 63 6f 70 79 20 66 6f 72 | 20 72 65 66 65 72 65 6e |copy for| referen|
|000010c0| 63 65 2e 20 4f 72 69 67 | 69 6e 61 6c 20 69 73 20 |ce. Orig|inal is |
|000010d0| 69 6e 20 56 69 64 65 6f | 54 6f 6f 6c 62 6f 78 2e |in Video|Toolbox.|
|000010e0| 68 2e 0d 73 74 72 75 63 | 74 20 54 69 6d 65 72 7b |h..struc|t Timer{|
|000010f0| 0d 09 54 4d 54 61 73 6b | 20 74 69 6d 65 3b 0d 09 |..TMTask| time;..|
|00001100| 6c 6f 6e 67 20 6f 75 72 | 41 35 3b 0d 09 6c 6f 6e |long our|A5;..lon|
|00001110| 67 20 69 6e 74 65 72 76 | 61 6c 2c 65 6c 61 70 73 |g interv|al,elaps|
|00001120| 65 64 2c 65 6c 61 70 73 | 65 64 49 6e 74 65 72 76 |ed,elaps|edInterv|
|00001130| 61 6c 73 3b 0d 09 6c 6f | 6e 67 20 74 69 6d 65 54 |als;..lo|ng timeT|
|00001140| 6f 53 74 61 72 74 54 69 | 6d 65 72 3b 09 09 09 2f |oStartTi|mer;.../|
|00001150| 2f 20 6d 69 6e 69 6d 75 | 6d 20 74 69 6d 65 20 69 |/ minimu|m time i|
|00001160| 6e 20 b5 73 0d 09 6c 6f | 6e 67 20 73 74 6f 70 44 |n .s..lo|ng stopD|
|00001170| 65 6c 61 79 3b 09 09 09 | 09 09 2f 2f 20 b5 73 20 |elay;...|..// .s |
|00001180| 66 72 6f 6d 20 63 61 6c | 6c 20 74 6f 20 73 74 6f |from cal|l to sto|
|00001190| 70 2c 20 72 65 20 66 72 | 6f 6d 20 63 61 6c 6c 20 |p, re fr|om call |
|000011a0| 74 6f 20 73 74 61 72 74 | 0d 09 6c 6f 6e 67 20 74 |to start|..long t|
|000011b0| 69 6d 65 4d 61 6e 61 67 | 65 72 56 65 72 73 69 6f |imeManag|erVersio|
|000011c0| 6e 3b 0d 09 73 74 72 75 | 63 74 20 54 69 6d 65 72 |n;..stru|ct Timer|
|000011d0| 20 2a 6e 65 78 74 2c 2a | 70 72 65 76 69 6f 75 73 | *next,*|previous|
|000011e0| 3b 09 2f 2f 20 64 6f 75 | 62 6c 79 20 6c 69 6e 6b |;.// dou|bly link|
|000011f0| 65 64 20 6c 69 73 74 20 | 6f 66 20 54 69 6d 65 72 |ed list |of Timer|
|00001200| 73 0d 7d 3b 0d 2a 2f 0d | 0d 73 74 61 74 69 63 20 |s.};.*/.|.static |
|00001210| 54 69 6d 65 72 20 64 65 | 66 61 75 6c 74 54 69 6d |Timer de|faultTim|
|00001220| 65 72 2c 71 54 69 6d 65 | 72 3d 7b 30 2c 30 2c 30 |er,qTime|r={0,0,0|
|00001230| 2c 30 2c 30 2c 30 2c 30 | 2c 30 2c 30 2c 30 2c 30 |,0,0,0,0|,0,0,0,0|
|00001240| 7d 3b 0d 73 74 61 74 69 | 63 20 6c 6f 6e 67 20 76 |};.stati|c long v|
|00001250| 6d 50 72 65 73 65 6e 74 | 3d 30 3b 0d 23 64 65 66 |mPresent|=0;.#def|
|00001260| 69 6e 65 20 54 41 53 4b | 5f 53 49 5a 45 20 31 30 |ine TASK|_SIZE 10|
|00001270| 30 30 09 2f 2f 20 47 65 | 6e 65 72 6f 75 73 20 67 |00.// Ge|nerous g|
|00001280| 75 65 73 73 20 66 6f 72 | 20 73 69 7a 65 20 6f 66 |uess for| size of|
|00001290| 20 72 6f 75 74 69 6e 65 | 0d 0d 54 69 6d 65 72 20 | routine|..Timer |
|000012a0| 2a 4e 65 77 54 69 6d 65 | 72 28 76 6f 69 64 29 0d |*NewTime|r(void).|
|000012b0| 7b 0d 09 73 74 61 74 69 | 63 20 73 68 6f 72 74 20 |{..stati|c short |
|000012c0| 66 69 72 73 74 54 69 6d | 65 3d 31 3b 0d 09 65 78 |firstTim|e=1;..ex|
|000012d0| 74 65 72 6e 20 54 69 6d | 65 72 20 64 65 66 61 75 |tern Tim|er defau|
|000012e0| 6c 74 54 69 6d 65 72 2c | 71 54 69 6d 65 72 3b 0d |ltTimer,|qTimer;.|
|000012f0| 09 54 69 6d 65 72 20 2a | 74 2c 2a 74 74 3b 0d 09 |.Timer *|t,*tt;..|
|00001300| 6c 6f 6e 67 20 6a 3b 0d | 09 0d 09 69 66 28 66 69 |long j;.|...if(fi|
|00001310| 72 73 74 54 69 6d 65 29 | 7b 0d 09 09 66 69 72 73 |rstTime)|{...firs|
|00001320| 74 54 69 6d 65 3d 30 3b | 0d 09 09 71 54 69 6d 65 |tTime=0;|...qTime|
|00001330| 72 2e 6e 65 78 74 3d 71 | 54 69 6d 65 72 2e 70 72 |r.next=q|Timer.pr|
|00001340| 65 76 69 6f 75 73 3d 4e | 55 4c 4c 3b 0d 09 09 23 |evious=N|ULL;...#|
|00001350| 69 66 6e 64 65 66 20 4d | 41 54 4c 41 42 0d 09 09 |ifndef M|ATLAB...|
|00001360| 09 5f 61 74 65 78 69 74 | 28 4b 69 6c 6c 45 76 65 |._atexit|(KillEve|
|00001370| 72 79 54 69 6d 65 72 29 | 3b 0d 09 09 23 65 6e 64 |ryTimer)|;...#end|
|00001380| 69 66 0d 09 09 47 65 73 | 74 61 6c 74 28 67 65 73 |if...Ges|talt(ges|
|00001390| 74 61 6c 74 56 4d 41 74 | 74 72 2c 26 76 6d 50 72 |taltVMAt|tr,&vmPr|
|000013a0| 65 73 65 6e 74 29 3b 0d | 09 09 76 6d 50 72 65 73 |esent);.|..vmPres|
|000013b0| 65 6e 74 20 26 3d 20 67 | 65 73 74 61 6c 74 56 4d |ent &= g|estaltVM|
|000013c0| 50 72 65 73 65 6e 74 3b | 0d 09 09 74 3d 26 64 65 |Present;|...t=&de|
|000013d0| 66 61 75 6c 74 54 69 6d | 65 72 3b 0d 09 09 74 2d |faultTim|er;...t-|
|000013e0| 3e 6f 75 72 41 35 20 3d | 20 53 65 74 43 75 72 72 |>ourA5 =| SetCurr|
|000013f0| 65 6e 74 41 35 28 29 3b | 0d 09 09 74 2d 3e 74 69 |entA5();|...t->ti|
|00001400| 6d 65 2e 74 6d 41 64 64 | 72 20 3d 20 28 54 69 6d |me.tmAdd|r = (Tim|
|00001410| 65 72 50 72 6f 63 50 74 | 72 29 54 69 6d 65 72 54 |erProcPt|r)TimerT|
|00001420| 61 73 6b 3b 0d 09 09 74 | 2d 3e 74 69 6d 65 2e 74 |ask;...t|->time.t|
|00001430| 6d 43 6f 75 6e 74 3d 74 | 2d 3e 74 69 6d 65 2e 74 |mCount=t|->time.t|
|00001440| 6d 57 61 6b 65 55 70 3d | 74 2d 3e 74 69 6d 65 2e |mWakeUp=|t->time.|
|00001450| 74 6d 52 65 73 65 72 76 | 65 64 3d 30 3b 0d 09 09 |tmReserv|ed=0;...|
|00001460| 74 2d 3e 65 6c 61 70 73 | 65 64 49 6e 74 65 72 76 |t->elaps|edInterv|
|00001470| 61 6c 73 3d 74 2d 3e 65 | 6c 61 70 73 65 64 3d 30 |als=t->e|lapsed=0|
|00001480| 3b 09 09 09 09 09 09 09 | 0d 09 09 74 2d 3e 74 69 |;.......|...t->ti|
|00001490| 6d 65 4d 61 6e 61 67 65 | 72 56 65 72 73 69 6f 6e |meManage|rVersion|
|000014a0| 3d 30 3b 0d 09 09 47 65 | 73 74 61 6c 74 28 67 65 |=0;...Ge|stalt(ge|
|000014b0| 73 74 61 6c 74 54 69 6d | 65 4d 67 72 56 65 72 73 |staltTim|eMgrVers|
|000014c0| 69 6f 6e 2c 26 74 2d 3e | 74 69 6d 65 4d 61 6e 61 |ion,&t->|timeMana|
|000014d0| 67 65 72 56 65 72 73 69 | 6f 6e 29 3b 0d 09 09 73 |gerVersi|on);...s|
|000014e0| 77 69 74 63 68 28 74 2d | 3e 74 69 6d 65 4d 61 6e |witch(t-|>timeMan|
|000014f0| 61 67 65 72 56 65 72 73 | 69 6f 6e 29 7b 0d 09 09 |agerVers|ion){...|
|00001500| 63 61 73 65 20 30 3a 0d | 09 09 63 61 73 65 20 67 |case 0:.|..case g|
|00001510| 65 73 74 61 6c 74 53 74 | 61 6e 64 61 72 64 54 69 |estaltSt|andardTi|
|00001520| 6d 65 4d 67 72 3a 0d 09 | 09 09 70 72 69 6e 74 66 |meMgr:..|..printf|
|00001530| 28 22 4e 65 77 54 69 6d | 65 72 3a 20 6f 6c 64 20 |("NewTim|er: old |
|00001540| 53 79 73 74 65 6d 20 6c | 61 63 6b 73 20 74 68 65 |System l|acks the|
|00001550| 20 52 65 76 69 73 65 64 | 20 54 69 6d 65 20 4d 61 | Revised| Time Ma|
|00001560| 6e 61 67 65 72 2e 5c 6e | 22 29 3b 0d 09 09 09 72 |nager.\n|");....r|
|00001570| 65 74 75 72 6e 20 4e 55 | 4c 4c 3b 0d 09 09 63 61 |eturn NU|LL;...ca|
|00001580| 73 65 20 67 65 73 74 61 | 6c 74 52 65 76 69 73 65 |se gesta|ltRevise|
|00001590| 64 54 69 6d 65 4d 67 72 | 3a 0d 09 09 09 74 2d 3e |dTimeMgr|:....t->|
|000015a0| 69 6e 74 65 72 76 61 6c | 20 3d 20 31 4c 3b 09 09 |interval| = 1L;..|
|000015b0| 09 09 2f 2f 20 53 65 74 | 20 74 68 65 20 74 69 6d |..// Set| the tim|
|000015c0| 65 72 20 69 6e 74 65 72 | 76 61 6c 20 74 6f 20 31 |er inter|val to 1|
|000015d0| 20 6d 73 0d 09 09 09 62 | 72 65 61 6b 3b 0d 09 09 | ms....b|reak;...|
|000015e0| 63 61 73 65 20 67 65 73 | 74 61 6c 74 45 78 74 65 |case ges|taltExte|
|000015f0| 6e 64 65 64 54 69 6d 65 | 4d 67 72 3a 0d 09 09 64 |ndedTime|Mgr:...d|
|00001600| 65 66 61 75 6c 74 3a 0d | 09 09 09 74 2d 3e 69 6e |efault:.|...t->in|
|00001610| 74 65 72 76 61 6c 20 3d | 20 2d 31 30 30 30 30 30 |terval =| -100000|
|00001620| 30 30 4c 3b 09 09 2f 2f | 20 53 65 74 20 74 68 65 |00L;..//| Set the|
|00001630| 20 74 69 6d 65 72 20 69 | 6e 74 65 72 76 61 6c 20 | timer i|nterval |
|00001640| 74 6f 20 31 30 20 73 0d | 09 09 7d 0d 09 09 74 2d |to 10 s.|..}...t-|
|00001650| 3e 6e 65 78 74 3d 4e 55 | 4c 4c 3b 0d 09 09 74 2d |>next=NU|LL;...t-|
|00001660| 3e 70 72 65 76 69 6f 75 | 73 3d 26 71 54 69 6d 65 |>previou|s=&qTime|
|00001670| 72 3b 0d 09 09 74 2d 3e | 74 69 6d 65 54 6f 53 74 |r;...t->|timeToSt|
|00001680| 61 72 74 54 69 6d 65 72 | 3d 74 2d 3e 73 74 6f 70 |artTimer|=t->stop|
|00001690| 44 65 6c 61 79 3d 30 3b | 0d 09 09 0d 09 09 2f 2f |Delay=0;|......//|
|000016a0| 20 4d 65 61 73 75 72 65 | 20 74 69 6d 65 54 6f 53 | Measure| timeToS|
|000016b0| 74 61 72 74 54 69 6d 65 | 72 20 61 6e 64 20 73 74 |tartTime|r and st|
|000016c0| 6f 70 44 65 6c 61 79 20 | 6f 66 66 73 65 74 73 2e |opDelay |offsets.|
|000016d0| 0d 09 09 74 3d 4e 65 77 | 54 69 6d 65 72 28 29 3b |...t=New|Timer();|
|000016e0| 0d 09 09 53 74 61 72 74 | 54 69 6d 65 72 28 74 29 |...Start|Timer(t)|
|000016f0| 3b 0d 09 09 74 2d 3e 74 | 69 6d 65 54 6f 53 74 61 |;...t->t|imeToSta|
|00001700| 72 74 54 69 6d 65 72 3d | 53 74 6f 70 54 69 6d 65 |rtTimer=|StopTime|
|00001710| 72 28 74 29 3b 0d 09 09 | 74 74 3d 4e 65 77 54 69 |r(t);...|tt=NewTi|
|00001720| 6d 65 72 28 29 3b 0d 09 | 09 53 74 61 72 74 54 69 |mer();..|.StartTi|
|00001730| 6d 65 72 28 74 29 3b 0d | 09 09 53 74 61 72 74 54 |mer(t);.|..StartT|
|00001740| 69 6d 65 72 28 74 74 29 | 3b 0d 09 09 6a 3d 53 74 |imer(tt)|;...j=St|
|00001750| 6f 70 54 69 6d 65 72 28 | 74 29 3b 0d 09 09 64 65 |opTimer(|t);...de|
|00001760| 66 61 75 6c 74 54 69 6d | 65 72 2e 73 74 6f 70 44 |faultTim|er.stopD|
|00001770| 65 6c 61 79 3d 74 2d 3e | 73 74 6f 70 44 65 6c 61 |elay=t->|stopDela|
|00001780| 79 3d 32 2a 74 2d 3e 74 | 69 6d 65 54 6f 53 74 61 |y=2*t->t|imeToSta|
|00001790| 72 74 54 69 6d 65 72 2d | 6a 3b 0d 09 09 2f 2f 20 |rtTimer-|j;...// |
|000017a0| 54 68 65 20 63 6f 6d 70 | 75 74 65 64 20 22 63 79 |The comp|uted "cy|
|000017b0| 63 6c 65 22 20 69 6e 74 | 65 72 76 61 6c 20 77 69 |cle" int|erval wi|
|000017c0| 6c 6c 20 68 61 76 65 20 | 73 74 6f 70 44 65 6c 61 |ll have |stopDela|
|000017d0| 79 20 72 65 6d 6f 76 65 | 64 2e 0d 09 09 2f 2f 20 |y remove|d....// |
|000017e0| 54 68 65 20 75 73 65 72 | 20 77 69 73 68 69 6e 67 |The user| wishing|
|000017f0| 20 74 6f 20 63 6f 6d 70 | 75 74 65 20 74 68 65 20 | to comp|ute the |
|00001800| 22 62 65 74 77 65 65 6e | 22 20 69 6e 74 65 72 76 |"between|" interv|
|00001810| 61 6c 20 77 69 6c 6c 20 | 62 65 0d 09 09 2f 2f 20 |al will |be...// |
|00001820| 73 75 62 74 72 61 63 74 | 69 6e 67 20 74 68 65 20 |subtract|ing the |
|00001830| 74 69 6d 65 54 6f 53 74 | 61 72 74 54 69 6d 65 72 |timeToSt|artTimer|
|00001840| 2c 20 73 6f 20 77 65 20 | 73 68 6f 75 6c 64 20 73 |, so we |should s|
|00001850| 75 62 74 72 61 63 74 20 | 0d 09 09 2f 2f 20 74 68 |ubtract |...// th|
|00001860| 65 20 73 74 6f 70 44 65 | 6c 61 79 20 66 72 6f 6d |e stopDe|lay from|
|00001870| 20 74 68 61 74 0d 09 09 | 2f 2f 20 73 6f 20 74 68 | that...|// so th|
|00001880| 65 20 73 74 6f 70 44 65 | 6c 61 79 20 63 61 6e 63 |e stopDe|lay canc|
|00001890| 65 6c 73 20 6f 75 74 20 | 77 68 65 6e 20 22 62 65 |els out |when "be|
|000018a0| 74 77 65 65 6e 22 20 74 | 69 6d 65 20 69 73 20 63 |tween" t|ime is c|
|000018b0| 6f 6d 70 75 74 65 64 2e | 0d 09 09 64 65 66 61 75 |omputed.|...defau|
|000018c0| 6c 74 54 69 6d 65 72 2e | 74 69 6d 65 54 6f 53 74 |ltTimer.|timeToSt|
|000018d0| 61 72 74 54 69 6d 65 72 | 3d 74 2d 3e 74 69 6d 65 |artTimer|=t->time|
|000018e0| 54 6f 53 74 61 72 74 54 | 69 6d 65 72 2d 3d 74 2d |ToStartT|imer-=t-|
|000018f0| 3e 73 74 6f 70 44 65 6c | 61 79 3b 0d 09 09 44 69 |>stopDel|ay;...Di|
|00001900| 73 70 6f 73 65 54 69 6d | 65 72 28 74 74 29 3b 0d |sposeTim|er(tt);.|
|00001910| 09 09 72 65 74 75 72 6e | 20 74 3b 0d 09 7d 0d 09 |..return| t;..}..|
|00001920| 74 3d 28 54 69 6d 65 72 | 20 2a 29 4e 65 77 50 74 |t=(Timer| *)NewPt|
|00001930| 72 28 73 69 7a 65 6f 66 | 28 54 69 6d 65 72 29 29 |r(sizeof|(Timer))|
|00001940| 3b 0d 09 69 66 28 74 21 | 3d 4e 55 4c 4c 29 7b 0d |;..if(t!|=NULL){.|
|00001950| 09 09 2a 74 3d 64 65 66 | 61 75 6c 74 54 69 6d 65 |..*t=def|aultTime|
|00001960| 72 3b 0d 09 09 74 2d 3e | 6e 65 78 74 3d 71 54 69 |r;...t->|next=qTi|
|00001970| 6d 65 72 2e 6e 65 78 74 | 3b 0d 09 09 69 66 28 74 |mer.next|;...if(t|
|00001980| 2d 3e 6e 65 78 74 21 3d | 4e 55 4c 4c 29 74 2d 3e |->next!=|NULL)t->|
|00001990| 6e 65 78 74 2d 3e 70 72 | 65 76 69 6f 75 73 3d 74 |next->pr|evious=t|
|000019a0| 3b 0d 09 09 71 54 69 6d | 65 72 2e 6e 65 78 74 3d |;...qTim|er.next=|
|000019b0| 74 3b 0d 09 09 69 66 28 | 76 6d 50 72 65 73 65 6e |t;...if(|vmPresen|
|000019c0| 74 29 7b 0d 09 09 09 48 | 6f 6c 64 4d 65 6d 6f 72 |t){....H|oldMemor|
|000019d0| 79 28 74 2c 73 69 7a 65 | 6f 66 28 2a 74 29 29 3b |y(t,size|of(*t));|
|000019e0| 0d 09 09 09 48 6f 6c 64 | 4d 65 6d 6f 72 79 28 74 |....Hold|Memory(t|
|000019f0| 2d 3e 74 69 6d 65 2e 74 | 6d 41 64 64 72 2c 54 41 |->time.t|mAddr,TA|
|00001a00| 53 4b 5f 53 49 5a 45 29 | 3b 0d 09 09 7d 0d 09 09 |SK_SIZE)|;...}...|
|00001a10| 69 66 28 74 2d 3e 74 69 | 6d 65 4d 61 6e 61 67 65 |if(t->ti|meManage|
|00001a20| 72 56 65 72 73 69 6f 6e | 3d 3d 67 65 73 74 61 6c |rVersion|==gestal|
|00001a30| 74 52 65 76 69 73 65 64 | 54 69 6d 65 4d 67 72 29 |tRevised|TimeMgr)|
|00001a40| 49 6e 73 54 69 6d 65 28 | 28 51 45 6c 65 6d 50 74 |InsTime(|(QElemPt|
|00001a50| 72 29 74 29 3b 0d 09 09 | 65 6c 73 65 20 49 6e 73 |r)t);...|else Ins|
|00001a60| 58 54 69 6d 65 28 28 51 | 45 6c 65 6d 50 74 72 29 |XTime((Q|ElemPtr)|
|00001a70| 74 29 3b 0d 09 7d 0d 09 | 72 65 74 75 72 6e 20 74 |t);..}..|return t|
|00001a80| 3b 0d 7d 0d 0d 76 6f 69 | 64 20 44 69 73 70 6f 73 |;.}..voi|d Dispos|
|00001a90| 65 54 69 6d 65 72 28 54 | 69 6d 65 72 20 2a 74 29 |eTimer(T|imer *t)|
|00001aa0| 0d 7b 0d 09 54 69 6d 65 | 72 20 2a 74 74 3b 0d 09 |.{..Time|r *tt;..|
|00001ab0| 0d 09 69 66 28 74 3d 3d | 4e 55 4c 4c 29 72 65 74 |..if(t==|NULL)ret|
|00001ac0| 75 72 6e 3b 0d 09 52 6d | 76 54 69 6d 65 28 28 51 |urn;..Rm|vTime((Q|
|00001ad0| 45 6c 65 6d 50 74 72 29 | 74 29 3b 0d 09 69 66 28 |ElemPtr)|t);..if(|
|00001ae0| 76 6d 50 72 65 73 65 6e | 74 29 7b 0d 09 09 55 6e |vmPresen|t){...Un|
|00001af0| 68 6f 6c 64 4d 65 6d 6f | 72 79 28 74 2c 73 69 7a |holdMemo|ry(t,siz|
|00001b00| 65 6f 66 28 2a 74 29 29 | 3b 0d 09 09 55 6e 68 6f |eof(*t))|;...Unho|
|00001b10| 6c 64 4d 65 6d 6f 72 79 | 28 74 2d 3e 74 69 6d 65 |ldMemory|(t->time|
|00001b20| 2e 74 6d 41 64 64 72 2c | 54 41 53 4b 5f 53 49 5a |.tmAddr,|TASK_SIZ|
|00001b30| 45 29 3b 0d 09 7d 0d 09 | 74 2d 3e 70 72 65 76 69 |E);..}..|t->previ|
|00001b40| 6f 75 73 2d 3e 6e 65 78 | 74 3d 74 2d 3e 6e 65 78 |ous->nex|t=t->nex|
|00001b50| 74 3b 0d 09 69 66 28 74 | 2d 3e 6e 65 78 74 21 3d |t;..if(t|->next!=|
|00001b60| 4e 55 4c 4c 29 74 2d 3e | 6e 65 78 74 2d 3e 70 72 |NULL)t->|next->pr|
|00001b70| 65 76 69 6f 75 73 3d 74 | 2d 3e 70 72 65 76 69 6f |evious=t|->previo|
|00001b80| 75 73 3b 0d 09 44 69 73 | 70 6f 73 50 74 72 28 28 |us;..Dis|posPtr((|
|00001b90| 50 74 72 29 74 29 3b 0d | 7d 0d 0d 76 6f 69 64 20 |Ptr)t);.|}..void |
|00001ba0| 53 74 61 72 74 54 69 6d | 65 72 28 54 69 6d 65 72 |StartTim|er(Timer|
|00001bb0| 20 2a 74 29 0d 7b 0d 09 | 69 66 28 74 3d 3d 4e 55 | *t).{..|if(t==NU|
|00001bc0| 4c 4c 29 72 65 74 75 72 | 6e 3b 0d 09 50 72 69 6d |LL)retur|n;..Prim|
|00001bd0| 65 54 69 6d 65 28 28 51 | 45 6c 65 6d 50 74 72 29 |eTime((Q|ElemPtr)|
|00001be0| 74 2c 74 2d 3e 69 6e 74 | 65 72 76 61 6c 29 3b 0d |t,t->int|erval);.|
|00001bf0| 7d 0d 0d 6c 6f 6e 67 20 | 53 74 6f 70 54 69 6d 65 |}..long |StopTime|
|00001c00| 72 28 54 69 6d 65 72 20 | 2a 74 29 09 09 09 09 09 |r(Timer |*t).....|
|00001c10| 09 09 2f 2f 20 52 65 74 | 75 72 6e 73 20 b5 73 0d |..// Ret|urns .s.|
|00001c20| 7b 0d 09 72 65 67 69 73 | 74 65 72 20 6c 6f 6e 67 |{..regis|ter long|
|00001c30| 20 6d 69 63 72 6f 53 65 | 63 6f 6e 64 73 3b 0d 09 | microSe|conds;..|
|00001c40| 65 78 74 65 72 6e 20 54 | 69 6d 65 72 20 64 65 66 |extern T|imer def|
|00001c50| 61 75 6c 74 54 69 6d 65 | 72 3b 0d 0d 09 69 66 28 |aultTime|r;...if(|
|00001c60| 74 3d 3d 4e 55 4c 4c 29 | 72 65 74 75 72 6e 20 30 |t==NULL)|return 0|
|00001c70| 3b 0d 09 52 6d 76 54 69 | 6d 65 28 28 51 45 6c 65 |;..RmvTi|me((QEle|
|00001c80| 6d 50 74 72 29 74 29 3b | 0d 09 2f 2f 20 61 64 64 |mPtr)t);|..// add|
|00001c90| 20 75 70 20 74 68 65 20 | 65 6c 61 70 73 65 64 20 | up the |elapsed |
|00001ca0| 69 6e 74 65 72 76 61 6c | 73 20 70 6c 75 73 20 74 |interval|s plus t|
|00001cb0| 68 65 20 6f 6e 65 20 77 | 65 27 72 65 20 69 6e 2c |he one w|e're in,|
|00001cc0| 20 6d 69 6e 75 73 20 74 | 68 65 20 74 69 6d 65 20 | minus t|he time |
|00001cd0| 6c 65 66 74 0d 09 6d 69 | 63 72 6f 53 65 63 6f 6e |left..mi|croSecon|
|00001ce0| 64 73 3d 74 2d 3e 65 6c | 61 70 73 65 64 20 2b 20 |ds=t->el|apsed + |
|00001cf0| 74 2d 3e 69 6e 74 65 72 | 76 61 6c 3b 0d 09 69 66 |t->inter|val;..if|
|00001d00| 28 6d 69 63 72 6f 53 65 | 63 6f 6e 64 73 3e 30 29 |(microSe|conds>0)|
|00001d10| 20 6d 69 63 72 6f 53 65 | 63 6f 6e 64 73 2a 3d 31 | microSe|conds*=1|
|00001d20| 30 30 30 3b 09 09 09 2f | 2f 20 63 6f 6e 76 65 72 |000;.../|/ conver|
|00001d30| 74 20 6d 73 20 74 6f 20 | b5 73 0d 09 65 6c 73 65 |t ms to |.s..else|
|00001d40| 20 6d 69 63 72 6f 53 65 | 63 6f 6e 64 73 3d 2d 6d | microSe|conds=-m|
|00001d50| 69 63 72 6f 53 65 63 6f | 6e 64 73 3b 0d 09 69 66 |icroSeco|nds;..if|
|00001d60| 28 74 2d 3e 74 69 6d 65 | 2e 74 6d 43 6f 75 6e 74 |(t->time|.tmCount|
|00001d70| 3e 30 29 74 2d 3e 74 69 | 6d 65 2e 74 6d 43 6f 75 |>0)t->ti|me.tmCou|
|00001d80| 6e 74 2a 3d 2d 31 30 30 | 30 3b 09 2f 2f 20 63 6f |nt*=-100|0;.// co|
|00001d90| 6e 76 65 72 74 20 6d 73 | 20 74 6f 20 2d b5 73 0d |nvert ms| to -.s.|
|00001da0| 09 6d 69 63 72 6f 53 65 | 63 6f 6e 64 73 2b 3d 74 |.microSe|conds+=t|
|00001db0| 2d 3e 74 69 6d 65 2e 74 | 6d 43 6f 75 6e 74 3b 09 |->time.t|mCount;.|
|00001dc0| 09 09 09 09 2f 2f 20 2d | b5 73 20 75 6e 74 69 6c |....// -|.s until|
|00001dd0| 20 65 6e 64 20 6f 66 20 | 69 6e 74 65 72 76 61 6c | end of |interval|
|00001de0| 0d 09 6d 69 63 72 6f 53 | 65 63 6f 6e 64 73 2d 3d |..microS|econds-=|
|00001df0| 74 2d 3e 73 74 6f 70 44 | 65 6c 61 79 3b 09 09 09 |t->stopD|elay;...|
|00001e00| 09 09 09 2f 2f 20 63 6f | 6d 70 75 74 65 20 22 63 |...// co|mpute "c|
|00001e10| 79 63 6c 65 22 20 74 69 | 6d 65 0d 09 0d 09 2f 2f |ycle" ti|me....//|
|00001e20| 20 52 65 69 6e 73 74 61 | 6c 6c 20 74 68 65 20 54 | Reinsta|ll the T|
|00001e30| 69 6d 65 72 2c 20 74 6f | 20 62 65 20 72 65 61 64 |imer, to| be read|
|00001e40| 79 20 66 6f 72 20 66 6f | 72 20 61 6e 6f 74 68 65 |y for fo|r anothe|
|00001e50| 72 20 63 61 6c 6c 20 74 | 6f 20 53 74 61 72 74 54 |r call t|o StartT|
|00001e60| 69 6d 65 72 28 29 0d 09 | 74 2d 3e 74 69 6d 65 2e |imer()..|t->time.|
|00001e70| 74 6d 57 61 6b 65 55 70 | 3d 74 2d 3e 74 69 6d 65 |tmWakeUp|=t->time|
|00001e80| 2e 74 6d 52 65 73 65 72 | 76 65 64 3d 74 2d 3e 65 |.tmReser|ved=t->e|
|00001e90| 6c 61 70 73 65 64 3d 74 | 2d 3e 65 6c 61 70 73 65 |lapsed=t|->elapse|
|00001ea0| 64 49 6e 74 65 72 76 61 | 6c 73 3d 30 3b 09 09 09 |dInterva|ls=0;...|
|00001eb0| 09 09 09 09 0d 09 69 66 | 28 74 2d 3e 74 69 6d 65 |......if|(t->time|
|00001ec0| 4d 61 6e 61 67 65 72 56 | 65 72 73 69 6f 6e 3d 3d |ManagerV|ersion==|
|00001ed0| 67 65 73 74 61 6c 74 52 | 65 76 69 73 65 64 54 69 |gestaltR|evisedTi|
|00001ee0| 6d 65 4d 67 72 29 49 6e | 73 54 69 6d 65 28 28 51 |meMgr)In|sTime((Q|
|00001ef0| 45 6c 65 6d 50 74 72 29 | 74 29 3b 0d 09 65 6c 73 |ElemPtr)|t);..els|
|00001f00| 65 20 49 6e 73 58 54 69 | 6d 65 28 28 51 45 6c 65 |e InsXTi|me((QEle|
|00001f10| 6d 50 74 72 29 74 29 3b | 0d 09 0d 09 72 65 74 75 |mPtr)t);|....retu|
|00001f20| 72 6e 20 6d 69 63 72 6f | 53 65 63 6f 6e 64 73 3b |rn micro|Seconds;|
|00001f30| 0d 7d 0d 0d 64 6f 75 62 | 6c 65 20 53 74 6f 70 54 |.}..doub|le StopT|
|00001f40| 69 6d 65 72 53 65 63 73 | 28 54 69 6d 65 72 20 2a |imerSecs|(Timer *|
|00001f50| 74 29 09 09 09 09 09 09 | 2f 2f 20 52 65 74 75 72 |t)......|// Retur|
|00001f60| 6e 73 20 73 65 63 73 0d | 7b 0d 09 64 6f 75 62 6c |ns secs.|{..doubl|
|00001f70| 65 20 73 3b 0d 09 65 78 | 74 65 72 6e 20 54 69 6d |e s;..ex|tern Tim|
|00001f80| 65 72 20 64 65 66 61 75 | 6c 74 54 69 6d 65 72 3b |er defau|ltTimer;|
|00001f90| 0d 0d 09 69 66 28 74 3d | 3d 4e 55 4c 4c 29 72 65 |...if(t=|=NULL)re|
|00001fa0| 74 75 72 6e 20 4e 41 4e | 3b 0d 09 52 6d 76 54 69 |turn NAN|;..RmvTi|
|00001fb0| 6d 65 28 28 51 45 6c 65 | 6d 50 74 72 29 74 29 3b |me((QEle|mPtr)t);|
|00001fc0| 0d 09 2f 2f 20 61 64 64 | 20 75 70 20 74 68 65 20 |..// add| up the |
|00001fd0| 65 6c 61 70 73 65 64 20 | 69 6e 74 65 72 76 61 6c |elapsed |interval|
|00001fe0| 73 20 70 6c 75 73 20 74 | 68 65 20 6f 6e 65 20 77 |s plus t|he one w|
|00001ff0| 65 27 72 65 20 69 6e 2c | 20 6d 69 6e 75 73 20 74 |e're in,| minus t|
|00002000| 68 65 20 74 69 6d 65 20 | 6c 65 66 74 0d 09 74 2d |he time |left..t-|
|00002010| 3e 65 6c 61 70 73 65 64 | 49 6e 74 65 72 76 61 6c |>elapsed|Interval|
|00002020| 73 2b 2b 3b 0d 09 69 66 | 28 74 2d 3e 69 6e 74 65 |s++;..if|(t->inte|
|00002030| 72 76 61 6c 3e 30 29 20 | 73 3d 74 2d 3e 65 6c 61 |rval>0) |s=t->ela|
|00002040| 70 73 65 64 49 6e 74 65 | 72 76 61 6c 73 2a 31 30 |psedInte|rvals*10|
|00002050| 30 30 2e 30 2a 74 2d 3e | 69 6e 74 65 72 76 61 6c |00.0*t->|interval|
|00002060| 3b 09 09 2f 2f 20 6d 73 | 0d 09 65 6c 73 65 20 73 |;..// ms|..else s|
|00002070| 3d 28 64 6f 75 62 6c 65 | 29 2d 74 2d 3e 65 6c 61 |=(double|)-t->ela|
|00002080| 70 73 65 64 49 6e 74 65 | 72 76 61 6c 73 2a 74 2d |psedInte|rvals*t-|
|00002090| 3e 69 6e 74 65 72 76 61 | 6c 3b 09 09 09 09 2f 2f |>interva|l;....//|
|000020a0| 20 b5 73 0d 09 69 66 28 | 74 2d 3e 74 69 6d 65 2e | .s..if(|t->time.|
|000020b0| 74 6d 43 6f 75 6e 74 3e | 30 29 20 73 2d 3d 74 2d |tmCount>|0) s-=t-|
|000020c0| 3e 74 69 6d 65 2e 74 6d | 43 6f 75 6e 74 2a 31 30 |>time.tm|Count*10|
|000020d0| 30 30 2e 30 3b 09 2f 2f | 20 2d 6d 73 20 75 6e 74 |00.0;.//| -ms unt|
|000020e0| 69 6c 20 65 6e 64 20 6f | 66 20 69 6e 74 65 72 76 |il end o|f interv|
|000020f0| 61 6c 0d 09 65 6c 73 65 | 20 73 2b 3d 74 2d 3e 74 |al..else| s+=t->t|
|00002100| 69 6d 65 2e 74 6d 43 6f | 75 6e 74 3b 09 09 09 09 |ime.tmCo|unt;....|
|00002110| 09 09 09 2f 2f 20 2d b5 | 73 20 75 6e 74 69 6c 20 |...// -.|s until |
|00002120| 65 6e 64 20 6f 66 20 69 | 6e 74 65 72 76 61 6c 0d |end of i|nterval.|
|00002130| 09 73 2d 3d 74 2d 3e 73 | 74 6f 70 44 65 6c 61 79 |.s-=t->s|topDelay|
|00002140| 3b 09 09 09 09 09 09 09 | 09 09 2f 2f 20 63 6f 6d |;.......|..// com|
|00002150| 70 75 74 65 20 22 63 79 | 63 6c 65 22 20 74 69 6d |pute "cy|cle" tim|
|00002160| 65 0d 09 73 2a 3d 30 2e | 30 30 30 30 30 31 3b 0d |e..s*=0.|000001;.|
|00002170| 09 0d 09 2f 2f 20 52 65 | 69 6e 73 74 61 6c 6c 20 |...// Re|install |
|00002180| 74 68 65 20 54 69 6d 65 | 72 2c 20 74 6f 20 62 65 |the Time|r, to be|
|00002190| 20 72 65 61 64 79 20 66 | 6f 72 20 66 6f 72 20 61 | ready f|or for a|
|000021a0| 6e 6f 74 68 65 72 20 63 | 61 6c 6c 20 74 6f 20 53 |nother c|all to S|
|000021b0| 74 61 72 74 54 69 6d 65 | 72 28 29 0d 09 74 2d 3e |tartTime|r()..t->|
|000021c0| 74 69 6d 65 2e 74 6d 57 | 61 6b 65 55 70 3d 74 2d |time.tmW|akeUp=t-|
|000021d0| 3e 74 69 6d 65 2e 74 6d | 52 65 73 65 72 76 65 64 |>time.tm|Reserved|
|000021e0| 3d 74 2d 3e 65 6c 61 70 | 73 65 64 3d 74 2d 3e 65 |=t->elap|sed=t->e|
|000021f0| 6c 61 70 73 65 64 49 6e | 74 65 72 76 61 6c 73 3d |lapsedIn|tervals=|
|00002200| 30 3b 09 09 09 09 09 09 | 09 0d 09 69 66 28 74 2d |0;......|...if(t-|
|00002210| 3e 74 69 6d 65 4d 61 6e | 61 67 65 72 56 65 72 73 |>timeMan|agerVers|
|00002220| 69 6f 6e 3d 3d 67 65 73 | 74 61 6c 74 52 65 76 69 |ion==ges|taltRevi|
|00002230| 73 65 64 54 69 6d 65 4d | 67 72 29 49 6e 73 54 69 |sedTimeM|gr)InsTi|
|00002240| 6d 65 28 28 51 45 6c 65 | 6d 50 74 72 29 74 29 3b |me((QEle|mPtr)t);|
|00002250| 0d 09 65 6c 73 65 20 49 | 6e 73 58 54 69 6d 65 28 |..else I|nsXTime(|
|00002260| 28 51 45 6c 65 6d 50 74 | 72 29 74 29 3b 0d 09 0d |(QElemPt|r)t);...|
|00002270| 09 72 65 74 75 72 6e 20 | 73 3b 0d 7d 0d 0d 2f 2f |.return |s;.}..//|
|00002280| 20 4b 69 6c 6c 45 76 65 | 72 79 54 69 6d 65 72 20 | KillEve|ryTimer |
|00002290| 74 75 72 6e 73 20 6f 66 | 66 20 61 6c 6c 20 6f 75 |turns of|f all ou|
|000022a0| 72 20 54 69 6d 65 72 73 | 20 62 65 66 6f 72 65 20 |r Timers| before |
|000022b0| 77 65 20 71 75 69 74 2e | 20 54 68 65 72 65 20 69 |we quit.| There i|
|000022c0| 73 20 6e 6f 20 6e 65 65 | 64 20 74 6f 0d 2f 2f 20 |s no nee|d to.// |
|000022d0| 66 72 65 65 20 74 68 65 | 20 73 70 61 63 65 20 73 |free the| space s|
|000022e0| 69 6e 63 65 20 74 68 65 | 20 73 79 73 74 65 6d 20 |ince the| system |
|000022f0| 77 69 6c 6c 20 64 6f 20 | 74 68 61 74 20 61 75 74 |will do |that aut|
|00002300| 6f 6d 61 74 69 63 61 6c | 6c 79 2e 0d 0d 76 6f 69 |omatical|ly...voi|
|00002310| 64 20 4b 69 6c 6c 45 76 | 65 72 79 54 69 6d 65 72 |d KillEv|eryTimer|
|00002320| 28 76 6f 69 64 29 0d 7b | 0d 09 54 69 6d 65 72 20 |(void).{|..Timer |
|00002330| 2a 74 3b 0d 09 65 78 74 | 65 72 6e 20 54 69 6d 65 |*t;..ext|ern Time|
|00002340| 72 20 71 54 69 6d 65 72 | 3b 0d 0d 09 74 3d 71 54 |r qTimer|;...t=qT|
|00002350| 69 6d 65 72 2e 6e 65 78 | 74 3b 0d 09 77 68 69 6c |imer.nex|t;..whil|
|00002360| 65 28 74 21 3d 4e 55 4c | 4c 29 7b 0d 09 09 52 6d |e(t!=NUL|L){...Rm|
|00002370| 76 54 69 6d 65 28 28 51 | 45 6c 65 6d 50 74 72 29 |vTime((Q|ElemPtr)|
|00002380| 74 29 3b 0d 09 09 69 66 | 28 76 6d 50 72 65 73 65 |t);...if|(vmPrese|
|00002390| 6e 74 29 7b 0d 09 09 09 | 55 6e 68 6f 6c 64 4d 65 |nt){....|UnholdMe|
|000023a0| 6d 6f 72 79 28 74 2c 73 | 69 7a 65 6f 66 28 2a 74 |mory(t,s|izeof(*t|
|000023b0| 29 29 3b 0d 09 09 09 55 | 6e 68 6f 6c 64 4d 65 6d |));....U|nholdMem|
|000023c0| 6f 72 79 28 74 2d 3e 74 | 69 6d 65 2e 74 6d 41 64 |ory(t->t|ime.tmAd|
|000023d0| 64 72 2c 54 41 53 4b 5f | 53 49 5a 45 29 3b 0d 09 |dr,TASK_|SIZE);..|
|000023e0| 09 7d 0d 09 09 74 3d 74 | 2d 3e 6e 65 78 74 3b 0d |.}...t=t|->next;.|
|000023f0| 09 7d 0d 7d 0d 0d 2f 2f | 20 54 68 65 20 52 65 76 |.}.}..//| The Rev|
|00002400| 69 73 65 64 20 26 20 45 | 78 74 65 6e 64 65 64 20 |ised & E|xtended |
|00002410| 54 69 6d 65 20 6d 61 6e | 61 67 65 72 73 20 73 65 |Time man|agers se|
|00002420| 74 20 41 31 3d 26 74 61 | 73 6b 2e 74 69 6d 65 20 |t A1=&ta|sk.time |
|00002430| 62 65 66 6f 72 65 20 63 | 61 6c 6c 69 6e 67 20 54 |before c|alling T|
|00002440| 69 6d 65 72 54 61 73 6b | 0d 2f 2f 20 54 68 65 20 |imerTask|.// The |
|00002450| 63 6f 64 65 20 61 6c 6c | 6f 77 69 6e 67 20 61 63 |code all|owing ac|
|00002460| 63 65 73 73 20 74 6f 20 | 67 6c 6f 62 61 6c 73 20 |cess to |globals |
|00002470| 69 73 20 63 6f 6d 6d 65 | 6e 74 65 64 20 6f 75 74 |is comme|nted out|
|00002480| 20 62 65 63 61 75 73 65 | 20 69 74 20 69 73 20 6e | because| it is n|
|00002490| 6f 74 20 6e 65 65 64 65 | 64 20 68 65 72 65 2e 0d |ot neede|d here..|
|000024a0| 0d 23 70 72 61 67 6d 61 | 20 6f 70 74 69 6f 6e 73 |.#pragma| options|
|000024b0| 28 21 70 72 6f 66 69 6c | 65 29 09 2f 2f 20 69 74 |(!profil|e).// it|
|000024c0| 20 77 6f 75 6c 64 20 62 | 65 20 64 61 6e 67 65 72 | would b|e danger|
|000024d0| 6f 75 73 20 74 6f 20 63 | 61 6c 6c 20 74 68 65 20 |ous to c|all the |
|000024e0| 70 72 6f 66 69 6c 65 72 | 20 66 72 6f 6d 20 68 65 |profiler| from he|
|000024f0| 72 65 0d 50 74 72 20 47 | 65 74 41 31 28 76 6f 69 |re.Ptr G|etA1(voi|
|00002500| 64 29 3d 30 78 32 30 30 | 39 3b 09 09 2f 2f 20 4d |d)=0x200|9;..// M|
|00002510| 4f 56 45 2e 4c 20 41 31 | 2c 44 30 0d 0d 73 74 61 |OVE.L A1|,D0..sta|
|00002520| 74 69 63 20 70 61 73 63 | 61 6c 20 76 6f 69 64 20 |tic pasc|al void |
|00002530| 54 69 6d 65 72 54 61 73 | 6b 28 76 6f 69 64 29 09 |TimerTas|k(void).|
|00002540| 09 09 09 2f 2f 20 43 61 | 6c 6c 65 64 20 61 74 20 |...// Ca|lled at |
|00002550| 69 6e 74 65 72 72 75 70 | 74 20 74 69 6d 65 0d 7b |interrup|t time.{|
|00002560| 0d 09 6c 6f 6e 67 20 6f | 6c 64 41 35 3b 0d 09 54 |..long o|ldA5;..T|
|00002570| 69 6d 65 72 20 2a 74 3b | 0d 0d 09 74 3d 28 54 69 |imer *t;|...t=(Ti|
|00002580| 6d 65 72 20 2a 29 47 65 | 74 41 31 28 29 3b 0d 2f |mer *)Ge|tA1();./|
|00002590| 2f 09 6f 6c 64 41 35 20 | 3d 20 53 65 74 41 35 28 |/.oldA5 |= SetA5(|
|000025a0| 74 2d 3e 6f 75 72 41 35 | 29 3b 09 09 09 09 09 2f |t->ourA5|);...../|
|000025b0| 2f 20 52 65 65 73 74 61 | 62 6c 69 73 68 20 41 35 |/ Reesta|blish A5|
|000025c0| 20 66 6f 72 20 67 6c 6f | 62 61 6c 20 76 61 72 69 | for glo|bal vari|
|000025d0| 61 62 6c 65 73 0d 09 50 | 72 69 6d 65 54 69 6d 65 |ables..P|rimeTime|
|000025e0| 28 28 51 45 6c 65 6d 50 | 74 72 29 74 2c 74 2d 3e |((QElemP|tr)t,t->|
|000025f0| 69 6e 74 65 72 76 61 6c | 29 3b 09 09 09 2f 2f 20 |interval|);...// |
|00002600| 52 65 70 65 61 74 20 74 | 68 65 20 69 6e 74 65 72 |Repeat t|he inter|
|00002610| 76 61 6c 0d 09 74 2d 3e | 65 6c 61 70 73 65 64 20 |val..t->|elapsed |
|00002620| 2b 3d 20 74 2d 3e 69 6e | 74 65 72 76 61 6c 3b 09 |+= t->in|terval;.|
|00002630| 09 09 09 09 2f 2f 20 49 | 6e 63 72 65 6d 65 6e 74 |....// I|ncrement|
|00002640| 20 74 68 65 20 74 69 6d | 65 20 63 6f 75 6e 74 0d | the tim|e count.|
|00002650| 09 74 2d 3e 65 6c 61 70 | 73 65 64 49 6e 74 65 72 |.t->elap|sedInter|
|00002660| 76 61 6c 73 2b 2b 3b 0d | 2f 2f 09 53 65 74 41 35 |vals++;.|//.SetA5|
|00002670| 28 6f 6c 64 41 35 29 3b | 09 20 09 09 09 09 09 09 |(oldA5);|. ......|
|00002680| 09 2f 2f 20 52 65 73 74 | 6f 72 65 20 41 35 0d 7d |.// Rest|ore A5.}|
|00002690| 0d 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000026f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002700| 00 00 01 00 00 00 01 70 | 00 00 00 70 00 00 00 32 |.......p|...p...2|
|00002710| 65 29 30 78 30 38 61 34 | 00 20 00 00 03 ad 00 24 |e)0x08a4|. .....$|
|00002720| 00 4a 3b a0 00 00 11 28 | 47 44 48 61 6e 64 6c 65 |.J;....(|GDHandle|
|00002730| 07 54 69 6d 65 72 2e 63 | 02 00 00 00 54 45 58 54 |.Timer.c|....TEXT|
|00002740| 4b 41 48 4c 00 00 00 00 | 00 00 00 00 00 00 32 21 |KAHL....|......2!|
|00002750| 00 00 54 45 58 54 4b 41 | 48 4c 00 00 00 00 00 00 |..TEXTKA|HL......|
|00002760| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002770| 00 00 a7 e5 d5 d1 00 00 | 00 00 00 00 01 a2 94 20 |........|....... |
|00002780| 00 00 00 00 00 00 17 2a | 2a 28 2a 2a 4d 61 69 6e |.......*|*(**Main|
|00002790| 44 65 76 69 63 65 29 2e | 67 64 50 4d 61 70 00 26 |Device).|gdPMap.&|
|000027a0| 00 00 03 ac 00 24 00 4a | 39 b0 00 00 17 2a 28 2a |.....$.J|9....*(*|
|000027b0| 2a 4d 61 69 6e 44 65 76 | 69 63 65 29 2e 67 64 50 |*MainDev|ice).gdP|
|000027c0| 4d 61 70 20 00 2c 00 00 | 03 ac 00 24 00 4a 3a 54 |Map .,..|...$.J:T|
|000027d0| 80 00 00 c8 01 41 01 9d | 02 70 94 20 00 00 00 00 |.....A..|.p. ....|
|000027e0| 00 00 0d 2a 2a 4d 61 69 | 6e 44 65 76 69 63 65 20 |...**Mai|nDevice |
|000027f0| 00 1a 00 00 03 ac 00 24 | 00 4a 3a 98 00 00 0b 2a |.......$|.J:....*|
|00002800| 00 00 00 6c 00 04 00 28 | 00 00 1f 8d 00 e4 00 fa |...l...(|........|
|00002810| 3a b0 80 00 00 2c 03 ab | 01 01 04 da 94 20 00 00 |:....,..|..... ..|
|00002820| 00 00 00 00 09 28 2a 74 | 29 2e 74 69 6d 65 00 22 |.....(*t|).time."|
|00002830| 00 00 1f 8d 00 e4 00 fa | 3a 30 80 00 00 29 02 96 |........|:0...)..|
|00002840| 00 fe 03 c5 94 20 00 00 | 00 00 00 00 03 2a 74 20 |..... ..|.....*t |
|00002850| 00 10 00 00 1f 8d 00 e4 | 00 fa 39 ac 00 00 01 74 |........|..9....t|
|00002860| 00 10 00 00 1f e9 00 e6 | 00 fa 39 9c 00 00 01 73 |........|..9....s|
|00002870| 00 00 01 00 00 00 01 70 | 00 00 00 70 00 00 00 32 |.......p|...p...2|
|00002880| 00 f3 bf dc 20 b0 00 00 | 00 1c 00 32 00 00 44 54 |.... ...|...2..DT|
|00002890| 56 55 00 00 00 0a 29 21 | ff ff 00 00 00 00 00 00 |VU....)!|........|
|000028a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000028f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+